/ este código funciona y cada devolución de llamada hace referencia a una "i" diferente, indica que para cada iteración de ciclo se crea una nueva copia de "i", debido a que la devolución de llamada forma un cierre con una "i" distinta cada vez /
const arr = [10, 12, 15, 21]; for (let i = 0; i < arr.length; i++) { setTimeout(function() { console.log('Index: ' + i + ', element: '+ arr[i]); }, 3000) }/ Esto da error: Asignación a variable constante. ¿Por qué no en este caso se crea una nueva constante "i" para cada iteración del ciclo?
const arr = [10, 12, 15, 21]; for (const i = 0; i < arr.length; i++) { setTimeout(function() { console.log('Index: ' + i + ', element: '+ arr[i]); }, 3000) }++i no modifica la instancia de i ; crea una nueva instancia con un valor incrementado y se la vuelve a asignar a i . Si i se define como const , no puede volver a asignarle el valor y, por lo tanto, el error.
Debido a que una constante no debe cambiarse, no puede i++ en una constante.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const